/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Lenovo
 * Date: 2025-03-30
 * Time: 19:06
 */
// Person类：实现Cloneable接口表示支持克隆
class Person implements Cloneable {
    public String name;
    // 公有字段，持有Money对象的引用
    public Money money = new Money(); //引用类型字段，初始化时创建Money对象

    // 构造函数：初始化姓名
    public Person(String name) {
        this.name = name;
    }

    // 重写clone方法（深拷贝）
    @Override
    protected Object clone() throws CloneNotSupportedException {
        // 1. 浅拷贝基础对象，调用Object.clone()进行浅拷贝：复制name字段（基本类型），money字段（引用类型）仍指向原对象
        Person cloned = (Person) super.clone();
        // 2. 深拷贝核心操作--处理每个引用类型字段：为克隆对象创建新的Money实例
        cloned.money = new Money();  // 创建新的Money对象
        cloned.money.m = this.money.m;  // 复制数值（值相同）
        return cloned;//返回深拷贝后的对象
    }
}
